Problem Statement

How is RSGS affected by existing geosynchrouns satellites and debris?

Motivation

  1. Critical component for mission management and architecture.
  2. Regulatory entities have strong concerns about collision, but miss risks of servicing vehicles.
  3. Inspired by Draper's work on RPO.
  4. Personal interest in orbital mechanics and analysis.

3 Geo sats with 0.2 deg longitude separation (~150km), various inclinations. SegmentLocal

Notional RPO maneuvers. Consider first burn at ~100km away from target. SegmentLocal credit: Ian T Mitchell, Draper Laboratory Overview of Rendezvous and Capture Operations, sspd.gsfc.nasa.gov, 2010, without permission

Plan to Solve Problem

Visualize objects in a region of interest

  • Pull TLE files from spacetrack.org
  • Transform the TLE data into useful coordinate system (lat/lon)
  • Build a notional RSGS trajectory
  • Determine threats i.e. range from object to RSGS
  • Improvements; Build into model

SegmentLocal

Input Parameters

In [2]:
days = 2                      # Days to run sim
hours = 12                    # Hours to run sim
lon0 = -71                    # RSGS Longitude start (Boston)
target_name = 'GOES 1 '       # Target name (San Francisco)

Load TLE file locally (normally done live via spacetrack.org)

In [3]:
with open('tle/geo.tle', 'rb') as f:
    tle_list = pickle.load(f)

Calculate TLE orbits for all tracked satellites.

In [4]:
epoch1 = datetime.utcnow()
epoch2 = epoch1 + timedelta(days,0,0,0,0,hours)

sat_list = [Satellite(epoch1, epoch2) for n in range(0, len(tle_list), 3)]

for n, sat in enumerate(tqdm(sat_list, desc='Loading Satellites')):
    tle = tle_list[n*3:n*3+3]
    sat.load_tle(tle)

    if target_name in sat.name:
        sat.type = 'target'
        sat_target = sat
Loading Satellites: 100%|██████████| 1354/1354 [00:03<00:00, 348.76it/s]

Parse out only objects in region between Start Lon. and Target Longitude.

In [5]:
lon2 = sat_target.lon[0]
lon0 = lon0 - nmp.sign(lon0)*2
lon2 = lon2 - nmp.sign(lon2)*2

tmp_list = []
for n, sat in enumerate(sat_list):
    lon1 = sat.lon[0]

    if (lon1 >= lon0 and lon1 <= lon2 and lon2 > lon0) \
    or (lon1 <= lon0 and lon1 >= lon2 and lon2 < lon0):
        tmp_list.append(sat)

sat_list = tmp_list

Build RSGS Orbit

In [6]:
rsgs = RSGS(epoch1, epoch2)
rsgs.set_params(-113, lon2)

Calculate motion for all epochs

In [7]:
for n, sat in enumerate(tqdm(sat_list, desc='Computing Motion')):
    sat.get_motion()
    sat.get_range(rsgs)
Computing Motion: 100%|██████████| 204/204 [03:28<00:00,  3.16it/s] 

Calculate frames for 3D animation

In [8]:
sat_list.append(rsgs)
frame_cnt = sat_list[0].sim_cnt
frame_list = [GraphFrame(sat_list) for n in range(frame_cnt)]

for n, frame in enumerate(tqdm(frame_list, desc='Building Frames')):
    frame.load_data(n)
Building Frames: 100%|██████████| 216/216 [00:00<00:00, 473.00it/s]

Sidereal Time Equations SegmentLocal NIMA Technical Reqort TR8350.2, "Department of Defense World Geodetic System 1984, Its Definition and Relationships With Local Geodetic Systems", 2000

Print Results and Graph

  • Show all objects between $71\circ$ and $122\circ$ West at Geo-altitude (~35,800km).
  • Animate motion for 13.5 days as RSGS moves from start to end locations.
  • Calculate range to objects near RSGS during motion.
In [12]:
grf = Graph(frame_list, lon0, lon2, epoch1)
ani = grf.run()
from IPython.display import HTML
HTML(ani.to_html5_video())
Out[12]:

Ideas for the Future

  • How to tie-in with SysML models
  • How to conduct true orbital analysis and trajectory planning
    • This is not something that traditional Geo-Comm-Sat orbits people do.

Cortex: "A new framework to develop object-oriented and executable SysML models using the IPython Notebook" SegmentLocal An Object-oriented and Executable SysML Framework for Rapid Model Development Santiago Balestrini-Robinson, Dane F. Freeman, Daniel C. Browne 2015

OpenMDAO: "An Open-source framework for efficient Multidisciplinary Design, Analysis, & Optimization" SegmentLocal J. S. Gray, J. T. Hwang, J. R. R. A. Martins, K. T. Moore, and B. A. Naylor, “OpenMDAO: An Open-Source Framework for Multidisciplinary Design, Analysis, and Optimization,” Structural and Multidisciplinary Optimization, 2019.